/**
 * Page.java 公共的分页包
 */
package com.ozq.common.page;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * <分页包> <功能详细描述>
 * 
 * @author 欧增奇
 * @version [版本号, 2016年9月6日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class Page
{
    static Logger logger = LoggerFactory.getLogger(Page.class);

    /**
     * 每页显示记录数
     */
    public int everyPage;
    /**
     * 总记录数
     */
    public int totalCount;
    /**
     * 总页数
     */
    private int totalPage;
    /**
     * 当前页
     */
    private int currentPage;
    /**
     * 查询起始点
     */
    private int beginIndex;
    /**
     * 是否有上一页
     */
    private boolean hasPrePage;
    /**
     * 是否有下一页
     */
    private boolean hasNextPage;

    /**
     * 自定义构造方法
     * 
     * @param everyPage
     *            每页显示记录数
     * @param totalCount
     *            总条数
     * @param totalPage
     *            总页数
     * @param currentPage
     *            当前页
     * @param beginIndex
     *            查询起始点
     * @param hasPrePage
     *            是否有上一页
     * @param hasNextPage
     *            是否有下一页
     */
    public Page(int everyPage, int totalCount, int totalPage, int currentPage, int beginIndex, boolean hasPrePage, boolean hasNextPage)
    {
        this.everyPage = everyPage;
        this.totalCount = totalCount;
        this.totalPage = totalPage;
        this.currentPage = currentPage;
        this.beginIndex = beginIndex;
        this.hasPrePage = hasPrePage;
        this.hasNextPage = hasNextPage;
    }

    /**
     * 自定义构造方法
     * 
     * @param everyPage
     *            每页显示记录数
     * @param totalCount
     *            总条数
     * @param currentPage
     *            当前页
     */
    public Page(int everyPage, int totalCount, int currentPage)
    {
        this.everyPage = everyPage;
        this.totalCount = totalCount;
        this.currentPage = currentPage;
    }

    /**
     * 自定义构造方法（转自）
     * 
     * @param everyPage
     *            每页显示记录数
     * @param totalCount
     *            总条数
     * @param page
     *            分页包对象 page.currentPage
     */
    public Page(int everyPage, int totalCount, Page page)
    {
        this.everyPage = everyPage;
        this.totalCount = totalCount;
        if (page == null)
        {
            this.currentPage = 1;
        } else
        {
            this.currentPage = page.getCurrentPage();
        }
    }

    /**
     * 默认构造函数
     */
    public Page()
    {
    }

    /**
     * 获取-每页显示记录数
     * 
     * @return everyPage 每页显示记录数
     */
    public int getEveryPage()
    {
        return everyPage;
    }

    /**
     * 设置-每页显示记录数
     * 
     * @param everyPage
     *            每页显示记录数
     */
    public void setEveryPage(int everyPage)
    {
        this.everyPage = everyPage;
    }

    /**
     * 获取-总记录数
     * 
     * @return totalCount 总记录数
     */
    public int getTotalCount()
    {
        return totalCount;
    }

    /**
     * 设置-总记录数
     * 
     * @param totalCount
     *            总记录数
     */
    public void setTotalCount(int totalCount)
    {
        this.totalCount = totalCount;
    }

    /**
     * 获取-总页数
     * 
     * @return totalPage 总页数
     */
    public int getTotalPage()
    {
        return totalPage;
    }

    /**
     * 设置-总页数
     * 
     * @param totalPage
     *            总页数
     */
    public void setTotalPage(int totalPage)
    {
        this.totalPage = totalPage;
    }

    /**
     * 获取-当前页
     * 
     * @return currentPage 当前页
     */
    public int getCurrentPage()
    {
        return currentPage;
    }

    /**
     * 设置-当前页
     * 
     * @param currentPage
     *            当前页
     */
    public void setCurrentPage(int currentPage)
    {
        this.currentPage = currentPage;
    }

    /**
     * 获取-查询起始点
     * 
     * @return beginIndex 查询起始点
     */
    public int getBeginIndex()
    {
        return beginIndex;
    }

    /**
     * 设置-查询起始点
     * 
     * @param beginIndex
     *            查询起始点
     */
    public void setBeginIndex(int beginIndex)
    {
        this.beginIndex = beginIndex;
    }

    /**
     * 获取-是否有上一页
     * 
     * @return hasPrePage 是否有上一页
     */
    public boolean isHasPrePage()
    {
        return hasPrePage;
    }

    /**
     * 设置-是否有上一页
     * 
     * @param hasPrePage
     *            是否有上一页
     */
    public void setHasPrePage(boolean hasPrePage)
    {
        this.hasPrePage = hasPrePage;
    }

    /**
     * 获取-是否有下一页
     * 
     * @return hasNextPage 是否有下一页
     */
    public boolean isHasNextPage()
    {
        return hasNextPage;
    }

    /**
     * 设置-是否有下一页
     * 
     * @param hasNextPage
     *            是否有下一页
     */
    public void setHasNextPage(boolean hasNextPage)
    {
        this.hasNextPage = hasNextPage;
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString()
    {
        return ToStringBuilder.reflectionToString(this);
    }
}
